/**
 * 获取当前时间
 * @returns {string} yyyy-MM-dd hh:mm:ss
 */
export function getNowDateTime() {
	const date = new Date();
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0');
	const day = String(date.getDate()).padStart(2, '0');
	const hours = String(date.getHours()).padStart(2, '0');
	const minutes = String(date.getMinutes()).padStart(2, '0');
	const seconds = String(date.getSeconds()).padStart(2, '0');
	return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

/**
 * 获取当前时间
 * @returns {string} yyyyMMddhhmmss
 */
export function getNowDateTime2() {
	const date = new Date();
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0');
	const day = String(date.getDate()).padStart(2, '0');
	const hours = String(date.getHours()).padStart(2, '0');
	const minutes = String(date.getMinutes()).padStart(2, '0');
	const seconds = String(date.getSeconds()).padStart(2, '0');
	return `${year}${month}${day}${hours}${minutes}${seconds}`;
}

/**
 * 获取当前日期
 * @returns {string} yyyy-MM-dd
 */
export function getNowDate() {
	const date = new Date();
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0');
	const day = String(date.getDate()).padStart(2, '0');
	return `${year}-${month}-${day}`;
}

/**
 * 获取当前月份
 * @returns {string} yyyy-MM
 */
export function getNowMonth() {
	const date = new Date();
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0');
	return `${year}-${month}`;
}

/**
 * 月份加
 * @param {string} dataStr yyyy-MM...
 * @param {number} num 正数加，负数减
 * @returns {string} yyyy-MM
 */
export function getMonthOfAdd(dataStr, num) {
	// 格式化长日期 = 2025-04
	const monthStr = dataStr.slice(0, 7)
	const [year, month] = monthStr.split('-').map(Number);
	// 创建一个 Date 对象，设置为输入的年份和月份（月份从 0 开始）
	const date = new Date(year, month - 1, 1);
	// 加数量
	date.setMonth(date.getMonth() + num);
	// 格式化为 yyyy-MM 的形式
	const previousYear = date.getFullYear();
	const previousMonth = String(date.getMonth() + 1).padStart(2, '0');
	return `${previousYear}-${previousMonth}`;
}

/**
 * 获取当前年份
 * @returns {string} yyyy
 */
export function getNowYear() {
	const date = new Date();
	const year = date.getFullYear();
	return `${year}`;
}

/**
 * 年份加
 * @param {string} dataStr yyyy...
 * @param {number} num 正数加，负数减
 * @returns {string} yyyy
 */
export function getYearOfAdd(dataStr, num) {
	// 格式化长日期 = 2025
	const yearStr = dataStr.slice(0, 4)
	// 解析输入的字符串为数字
	const year = parseInt(yearStr, 10);
	// 获取上一个年份
	const previousYear = year + num;
	// 格式化为四位数的字符串
	return String(previousYear).padStart(4, '0');
}

/**
 * 格式化数字字符串为：带逗号的金额金额
 * @param {string} money
 * @returns {string}
 */
export function formatMoney(money) {
	return money.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}

/**
 * 判断简单四则运算公式里最后一个数字的整数位数
 * @param {string} formula
 * @returns {number}
 */
export function getLastNumberLength(formula) {
	// 使用正则表达式匹配所有数字（包括小数和负数）
	const numbers = formula.match(/-?\d+(\.\d+)?/g);

	if (!numbers || numbers.length === 0) {
		return 0
	}

	const lastNumber = numbers[numbers.length - 1];

	// 去掉小数部分和负号，计算整数位数
	const integerPart = lastNumber.split('.')[0].replace('-', '');
	return integerPart.length;
}

/**
 * 生成随机字符串
 * @param {number} length 字符串长度
 */
export function generateRandomString(length) {
	const characters = '123456789';
	let result = '';
	const charactersLength = characters.length;
	for (let i = 0; i < length; i++) {
		result += characters.charAt(Math.floor(Math.random() * charactersLength));
	}
	return result;
}